package com.woniu.service.Impl.homePage;

import com.alibaba.fastjson.JSON;
import com.woniu.dao.homePage.GoodsTypeTwoDao;
import com.woniu.entity.Goods;
import com.woniu.entity.GoodsType;
import com.woniu.service.homePage.IGoodsTypeService;
import com.woniu.util.ResData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;

/**
 * 商品分类实现类
 * @author 李松桦
 * @data 2023/3/5 15:43
 */
@Service
public class GoodsTypeServiceImpl implements IGoodsTypeService {
    @Autowired
    GoodsTypeTwoDao goodsTypeDao;

    @Autowired
    RedisTemplate<String,String> redisTemplate;
    /*查询所有的商品分类*/
    @Override
    public ResData<?> findAllGoodsTypes() {

        List<GoodsType> goodsTypeList = goodsTypeDao.findAllGoodsTypes();
        if (!CollectionUtils.isEmpty(goodsTypeList)){
            //先找到一级分类
            List<GoodsType> typeList = goodsTypeList.stream().filter(e -> e.getParent() == null)
                    .collect(Collectors.toList());

            //通过一级分类集合找到对应的二级分类
            //第一步，先循环一级分类，通过条件找到对应的二级分类
            //第二步，把二级分类放入一级分类属性中
            for (GoodsType goodTypes: typeList) {
                List<GoodsType> childGoodsType = new ArrayList<>();
                for (GoodsType goodsTypes2:goodsTypeList) {
                    if (Objects.equals(goodTypes.getId(),goodsTypes2.getParent())){
                        childGoodsType.add(goodsTypes2);
                    }
                }
                goodTypes.setChildren(childGoodsType);
            }

            return new ResData<>().ok(typeList);
        }

            return new ResData<>().ok();
    }

    /*根据商品类型Id查询商品*/
    @Override
    public ResData<?> queryGoodsByTypeId(Integer typeId) {
        List<Goods> goodsList = goodsTypeDao.queryGoodsByTypeId(typeId);
        return new ResData<>().ok(goodsList);
    }

    /*根据一级分类Id查询二级分类名称*/
    @Override
    public ResData<?> queryGoodsTypeById(Integer parent) {
        List<GoodsType> goodsTypes = goodsTypeDao.queryGoodsTypeById(parent);
        return new ResData<>().ok(goodsTypes);
    }


}
